function GetRandomNum(Min, Max) {
    var Range = Max - Min;
    var Rand = Math.random();
    return (Min + Math.round(Rand * Range));
}

var winWidth = 0;
var winHeight = 0;


// var bkSource = new ol.source.Vector({ wrapX: false });


var  positionGroup,bkVector,layerSwitcher,scaleLine;

var selectedMapId=1;

var mapType=null;


// var _setTimeout=setTimeout;
// window.setTimeout=function(callback,time,params){
//     var param=Array.prototype.slice.call(arguments,2);
//     var _callback=function(){
//         callback.apply(null,param);
//     }
//     _setTimeout(_callback,time);
// }
$(document).ready(function() {
    $('#switch-btn').mouseenter(function () {
        $(this).hide();
        $('#switch-panel').show();
    })

    $('#switch-panel').mouseleave(function () {
        $(this).hide();
        $('#switch-btn').show();
    })


    $('#popup-closer1').click(function () {
        mapArray[0].overlay.setPosition(undefined);
        reportLineSource.clear();
        waterSource.clear();
        $(this).blur();
        return false;
    })
    $('#popup-closer2').click(function () {
        mapArray[1].overlay.setPosition(undefined);
        $(this).blur();
        return false;
    })
    $('#popup-closer3').click(function () {
        mapArray[2].overlay.setPosition(undefined);
        $(this).blur();
        return false;
    })
    $('#popup-closer4').click(function () {
        mapArray[3].overlay.setPosition(undefined);
        $(this).blur();
        return false;
    })
    
    $(".switch-map button").click(function () {
        $(".switch-map button").css("background-color","rgba(0,60,136,.5)");
        $(this).css("background-color","orange");
    })


    $(".draw-button button").click(function () {
        $(".draw-button button").css("background-color","rgba(0,60,136,.5)");
        $(this).css("background-color","orange");
    })


    // $(".draw-button").each(function (index) {
    //     var right=40*index+60;
    //     $(this).css("right",right);
    // })

    $("#frame").click(function () {
        $("#search-content").hide();
    })

    $(".map").click(function(){
        if(mapType!="one")
        {
            if($(this).index(".map")+1!=selectedMapId)
            {
                $(this).css("border","1px solid red");
                $(this).siblings(".map").css("border","1px solid deepskyblue");
                selectedMapId=$(this).index(".map")+1;
                if(model=='end')
                {
                    model='start';
                }
            }
        }
    })

    // positionGroup=new ol.layer.Group({
    //     title: '船舶位置',
    //     layers: [
    //         new ol.layer.Image({
    //             title: 'AIS船舶',
    //             source: shipSource
    //         }),
    //         new ol.layer.Image({
    //             title: '船E行船舶',
    //             source: cyxSource
    //         }),
    //         vector
    //     ]
    // });

    // bkVector=new ol.layer.Vector({
    //     source: bkSource,
    //     style: new ol.style.Style({
    //         stroke: new ol.style.Stroke({
    //             color: '#FF0000',
    //             width: 2
    //         })
    //     })
    // });
    layerSwitcher=new LayerSwitcher();

    scaleLine=new ol.control.ScaleLine();
});




function oneMap(){

    if(mapType!=="one")
    {
        mapType="one";
        selectedMapId=1;
        typeSelect='None';
        findDimensions();
        switchMap();
    }
}

function twoMap(){
    if(mapType!=="two")
    {
        mapType="two";
        selectedMapId=1;
        findDimensions();
        switchMap();
    }

}

function fourMap(){
    if(mapType!=="four")
    {
        mapType="four";
        selectedMapId=1;
        findDimensions();
        switchMap();
    }

}

function reload() {
    findDimensions();

    if (mapType == "one") {
        $(".map").css("width", winWidth - 24);
        $(".map").css("height", winHeight - 30);
    } else if (mapType == "two") {
        $(".map").css("width", winWidth / 2 - 24);
        $(".map").css("height", winHeight - 30);
    } else if (mapType == "four") {
        $(".map").css("width", winWidth / 2 - 24);
        $(".map").css("height", winHeight / 2 - 30);
    }
}


function findDimensions() {
        //函数：获取尺寸
        //获取窗口宽度
        if (window.innerWidth)
            winWidth = window.innerWidth;
        else if ((document.body) && (document.body.clientWidth))
            winWidth = document.body.clientWidth;
        //获取窗口高度
        if (window.innerHeight)
            winHeight = window.innerHeight;
        else if ((document.body) && (document.body.clientHeight))
            winHeight = document.body.clientHeight;
        /*nasty hack to deal with doctype swith in IE*/
        //通过深入Document内部对body进行检测，获取窗口大小
        if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) {
            winHeight = document.documentElement.clientHeight;
            winWidth = document.documentElement.clientWidth;
        }
        //结果输出至两个文本框
    }


function switchMap() {

    if(mapType=="one"){
        $('.map').eq(0).css("border","1px solid deepskyblue");
        $(".map").css("width", winWidth - 24);
        $(".map").css("height", winHeight - 10);

        if(!company)
        {
            $(".map").css("height", winHeight - 35);
        }

        $(".draw-button button").css("background-color","rgba(0,60,136,.5)");
        $("#none-button button").css("background-color","orange");

        for(var i=1;i<=4;i++)
        {
          
            if(i<2)
            {
                $(".map").eq(i-1).show();
            }else if(i>=2)
            {
                $(".map").eq(i-1).hide();
            }
        }


        for(var a=0;a<mapArray.length;a++)
        {
            if(mapArray[a].target=="map1")
            {

                if(company){
                    getServerPoint();
                    getCompanyWarning();
                }else {
                    getFeature();
                    getCheckServerPoint();
                    getVtsFeature();
                }

                $(".draw-button").css("display","block");
                mapArray[a].map.addControl(layerSwitcher);
                mapArray[a].map.addControl(scaleLine);
                addInteraction();
                mapArray[a].map.updateSize();
                break;
            }
        }
    }else if(mapType=="two"){
        $(".map").css("width", winWidth / 2 - 24);
        $(".map").css("height", winHeight - 10);
        $(".map").css("float", "left");
        $('.map').eq(0).css("border","1px solid red");
        $('.map').eq(0).siblings('.map').css("border","1px solid deepskyblue");

        for(var i=1;i<=4;i++)
        {
            if(i<=2)
            {
                $(".map").eq(i-1).show();


            }else if(i>2)
            {
                $(".map").eq(i-1).hide();

            }
        }
        $(".draw-button").css("display","none");

        for(var a=0;a<mapArray.length;a++)
        {
            if(mapArray[a].target=="map1")
            {
                // mapArray[a].map.removeInteraction(draw);
                // mapArray[a].map.removeInteraction(mapArray[a].select);
                // mapArray[a].map.addInteraction(mapArray[a].select);
                // ol.Observable.unByKey(l);
                drawNone();
                mapArray[a].map.removeControl(layerSwitcher);
                mapArray[a].map.removeControl(scaleLine);
            }
            mapArray[a].map.updateSize();
        }
    }else  if(mapType=="four"){
        $(".map").css("width", winWidth / 2 - 24);
        $(".map").css("height", winHeight / 2 - 5);
        $(".map").css("float", "left");
        $('.map').eq(0).css("border","1px solid red");
        $('.map').eq(0).siblings('.map').css("border","1px solid deepskyblue");
        $(".map").show();
        $(".draw-button").css("display","none");

        for(var a=0;a<mapArray.length;a++)
        {


            if(mapArray[a].target=="map1")
            {
                // mapArray[a].map.removeInteraction(draw);
                // ol.Observable.unByKey(l);
                // mapArray[a].map.removeInteraction(mapArray[a].select);
                // mapArray[a].map.addInteraction(mapArray[a].select);
                drawNone();
                mapArray[a].map.removeControl(layerSwitcher);
                mapArray[a].map.removeControl(scaleLine);
            }
            mapArray[a].map.updateSize();
        }
    }
}



// function removeMapByMapId(mapId)
// {
//
//     $(".draw-button").css("display","none");
//
//     for(var i=0;i<mapArray.length;i++)
//     {
//         if(mapArray[i].target==mapId)
//         {
//             var mousePosition= mapArray[i].mousePosition;
//             mapArray.splice(i,1);
//             $("#"+mapId).html("<div  class='mouse-position' id='"+mousePosition+"'></div>");
//         }
//     }
//
// }

function _createRed(coordinate,mapObj) {
    return function () {
        createRed(coordinate,mapObj)
    }
    
}

function _loc(mapObj,lon,lat,course) {
    return function () {
        loc(mapObj,lon,lat,course);
    }
}

var locWater=function (lon,lat,areaName) {
    var mapObj;
    for(var a=0;a<mapArray.length;a++)
    {
        if(mapArray[a].target=="map"+selectedMapId)
        {
            mapObj=mapArray[a];
            break;
        }
    }
    $('#popup-content'+selectedMapId).html(areaName);
    mapObj.overlay.setPosition(ol.proj.fromLonLat([parseFloat(lon),parseFloat(lat)]));
    mapObj.view.setZoom(12);
    mapObj.view.setCenter(ol.proj.fromLonLat([parseFloat(lon),parseFloat(lat)]));
    mapObj.map.setView(mapObj.view);
}


var locServer = function (a,type,message) {
    var tmp;
    if(type=='server')
    {
        if(company)
        {
            tmp=serverSource.getFeatureById(a);
        }else {
            tmp=checkServerSource.getFeatureById(a);
        }
    }else  if(type=='warning')
    {
        tmp = source.getFeatureById(a);
    }

    var mapObj;
    if (tmp != null) {
        for(var a=0;a<mapArray.length;a++)
        {
            if(mapArray[a].target=="map"+selectedMapId)
            {
                mapObj=mapArray[a];
                break;
            }
        }

        if(type=='server')
        {
            $('#popup-content'+selectedMapId).html(message);
        }else if(type=='warning')
        {
            $('#popup-content'+selectedMapId).html(tmp.values_.contents);
        }
        mapObj.overlay.setPosition(tmp.getGeometry().flatCoordinates);
        mapObj.view.setZoom(13);
        mapObj.view.setCenter(tmp.getGeometry().flatCoordinates);
        mapObj.map.setView(mapObj.view);
    }
    else {
        layer.msg("未找到相关元素");
    }
}


function locTrail(mapObj,lon,lat) {
    mapObj.view.setZoom(15);
    mapObj.view.setCenter(ol.proj.fromLonLat([parseFloat(lon),parseFloat(lat)]));
    mapObj.map.setView(mapObj.view);
}

function loc(mapObj,lon,lat,course) {
    creatIcon(mapObj,lon,lat,course);
    clearTimeout(mapObj.t);
    var coordinate = new ol.proj.transform([parseFloat(lon),parseFloat(lat)], 'EPSG:4326', 'EPSG:3857');

    // mapObj.view.setZoom(15);
    mapObj.view.setCenter(ol.proj.fromLonLat([parseFloat(lon),parseFloat(lat)]));
    mapObj.map.setView(mapObj.view);
    if(course)
    {
        mapObj.t=setTimeout(_createRed(coordinate,mapObj) ,500);
    }
    
}





function stopWatch() {
    for(var a=0;a<mapArray.length;a++)
    {
        if(mapArray[a].target=="map"+selectedMapId)
        {
            mapArray[a].trackShip=null;
            mapObj=mapArray[a];
            break;
        }
    }
    $("#track-ship"+selectedMapId).html("");
    mapObj.bkSource.clear();
    mapObj.redPosition=null;
    mapObj.iconSource.clear();
}




function locMap(lon,lat,trackShip,shipname,course){

    var mapObj;
    $("#track-ship"+selectedMapId).html("");
    for(var a=0;a<mapArray.length;a++)
    {
        if(mapArray[a].target=="map"+selectedMapId)
        {
            if(shipname!=null)
            {
                $("#track-ship"+selectedMapId).html("当前跟踪船舶："+shipname);
            }
            mapArray[a].trackShip=trackShip;
            mapObj=mapArray[a];
            break;
        }
    }
    loc(mapObj,lon,lat,course);


    // if(mapType=='one')
    // {
    //     selectedMapId=1;
    // }else if(mapType=='two'){
        // if(selectedMapId<2)
        // {
        //     $('.map').eq(selectedMapId-1).css("border","1px solid red");
        //     $('.map').eq(selectedMapId-1).siblings('.map').css("border","1px solid deepskyblue");
        //     selectedMapId=selectedMapId+1;
        // } else
        // if(selectedMapId==2)
        // {
        //     $('.map').eq(0).css("border","1px solid red");
        //     $('.map').eq(0).siblings('.map').css("border","1px solid deepskyblue");
        //     selectedMapId=1;
        // }
    // }else if(mapType=='four'){
     
        // if(selectedMapId<4)
        // {
        //     $('.map').eq(selectedMapId-1).css("border","1px solid red");
        //     $('.map').eq(selectedMapId-1).siblings('.map').css("border","1px solid deepskyblue");
        //     selectedMapId=selectedMapId+1;
        // } else
        // if(selectedMapId==4)
        // {
        //     $('.map').eq(0).css("border","1px solid red");
        //     $('.map').eq(0).siblings('.map').css("border","1px solid deepskyblue");
        //     selectedMapId=1;
        // }
    // }
    // createRed(coordinate,mapObj1);
    //
    // setTimeout(locMap,5000,lon+0.01,lat+0.01);
}



function SetHMS(f) {
    //度
    var h = parseInt(f);
    //分
    var m = parseInt((parseFloat(f) - parseInt(h)) * 60);
    //秒
    var s = parseInt(((parseFloat(f) - parseInt(h)) * 60 - parseInt(m)) * 60);

    if (m.toString().length == 1) {
        m = '0' + m.toString();
    }
    if (s.toString().length == 1) {
        s = '0' + s.toString();
    }

    var hms = h + '°' + m + '′' + s + '″';
    if ($.trim(h) == "NaN")
        hms = ""
    return hms;
}


function createRed(coordinate,mapObj) {
    mapObj.redPosition=coordinate;
    mapObj.bkSource.clear();
    if (coordinate) {
        var pixel = mapObj.map.getPixelFromCoordinate(coordinate);

        if (mapObj.view.getZoom()) {
            var x = pixel[0];
            var y = pixel[1];
            var tmp = 18;
            var top_left = [
                    mapObj.map.getCoordinateFromPixel([x - tmp, y - tmp / 2]),
                    mapObj.map.getCoordinateFromPixel([x - tmp, y - tmp]),
                    mapObj.map.getCoordinateFromPixel([x - tmp / 2, y - tmp])
                ],
                top_right = [

                    mapObj.map.getCoordinateFromPixel([x + tmp / 2, y - tmp]),
                    mapObj.map.getCoordinateFromPixel([x + tmp, y - tmp]),
                    mapObj.map.getCoordinateFromPixel([x + tmp, y - tmp / 2])
                ],
                bottom_right = [
                    mapObj.map.getCoordinateFromPixel([x + tmp, y + tmp / 2]),
                    mapObj.map.getCoordinateFromPixel([x + tmp, y + tmp]),
                    mapObj.map.getCoordinateFromPixel([x + tmp / 2, y + tmp])
                ],
                bottom_left = [
                    mapObj.map.getCoordinateFromPixel([x - tmp / 2, y + tmp]),
                    mapObj.map.getCoordinateFromPixel([x - tmp, y + tmp]),
                    mapObj.map.getCoordinateFromPixel([x - tmp, y + tmp / 2])
                ];

            mapObj.bkSource.addFeatures([
                new ol.Feature({
                    geometry: new ol.geom.LineString(top_left),
                    name: 'top_left'
                }),
                new ol.Feature({
                    geometry: new ol.geom.LineString(top_right),
                    name: 'top_right'
                }),
                new ol.Feature({
                    geometry: new ol.geom.LineString(bottom_left),
                    name: 'bottom_left'
                }),
                new ol.Feature({
                    geometry: new ol.geom.LineString(bottom_right),
                    name: 'bottom_right'
                })
            ]);
        }
    }
}